package com.lifeverse.entity.enums;

/**
 * 生命体状态枚举
 * 定义生命体的运行状态
 */
public enum LifeEntityStatus {
    
    /**
     * 创建中 - 生命体正在被创建
     */
    CREATING("创建中", "生命体正在初始化创建过程中"),
    
    /**
     * 活跃 - 生命体正常运行
     */
    ACTIVE("活跃", "生命体正常运行，具备完整功能"),
    
    /**
     * 休眠 - 生命体处于低活跃状态
     */
    DORMANT("休眠", "生命体处于低活跃状态，保持基本功能"),
    
    /**
     * 进化中 - 生命体正在进行进化升级
     */
    EVOLVING("进化中", "生命体正在进行能力升级或结构优化"),
    
    /**
     * 融合中 - 生命体正在与其他生命体融合
     */
    MERGING("融合中", "生命体正在与其他生命体进行融合"),
    
    /**
     * 分裂中 - 生命体正在分裂成多个生命体
     */
    SPLITTING("分裂中", "生命体正在分裂成多个独立的生命体"),
    
    /**
     * 故障 - 生命体出现异常
     */
    MALFUNCTION("故障", "生命体出现异常，需要修复"),
    
    /**
     * 维护中 - 生命体正在进行维护
     */
    MAINTENANCE("维护中", "生命体正在进行系统维护和优化"),
    
    /**
     * 已终止 - 生命体已经终止运行
     */
    TERMINATED("已终止", "生命体已经终止运行，但数据保留"),
    
    /**
     * 已删除 - 生命体已被删除
     */
    DELETED("已删除", "生命体已被彻底删除");
    
    private final String displayName;
    private final String description;
    
    LifeEntityStatus(String displayName, String description) {
        this.displayName = displayName;
        this.description = description;
    }
    
    public String getDisplayName() {
        return displayName;
    }
    
    public String getDescription() {
        return description;
    }
    
    /**
     * 判断是否为活跃状态
     */
    public boolean isActive() {
        return this == ACTIVE || this == EVOLVING || this == MERGING || this == SPLITTING;
    }
    
    /**
     * 判断是否可以进行操作
     */
    public boolean isOperational() {
        return this != TERMINATED && this != DELETED && this != MALFUNCTION;
    }
    
    /**
     * 判断是否需要关注
     */
    public boolean needsAttention() {
        return this == MALFUNCTION || this == MAINTENANCE;
    }
}